﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
using WeifenLuo.WinFormsUI.Docking;

namespace wfdbg
{
    public enum DEBUG_INTERRUPT : uint
    {
        DEBUG_INTERRUPT_ACTIVE = 0,
        DEBUG_INTERRUPT_PASSIVE = 1,
        DEBUG_INTERRUPT_EXIT = 2
    };

    public enum DEBUG_WAIT : uint
    {
        DEBUG_WAIT_DEFAULT = 0x00000000
    };

    public enum DEBUG_STATUS : uint
    {
        DEBUG_STATUS_NO_CHANGE = 0,
        DEBUG_STATUS_GO = 1,
        DEBUG_STATUS_GO_HANDLED = 2,
        DEBUG_STATUS_GO_NOT_HANDLED = 3,
        DEBUG_STATUS_STEP_OVER = 4,
        DEBUG_STATUS_STEP_INTO = 5,
        DEBUG_STATUS_BREAK = 6,
        DEBUG_STATUS_NO_DEBUGGEE = 7,
        DEBUG_STATUS_STEP_BRANCH = 8,
        DEBUG_STATUS_IGNORE_EVENT = 9,
        DEBUG_STATUS_RESTART_REQUESTED = 10,
        DEBUG_STATUS_REVERSE_GO = 11,
        DEBUG_STATUS_REVERSE_STEP_BRANCH = 12,
        DEBUG_STATUS_REVERSE_STEP_OVER = 13,
        DEBUG_STATUS_REVERSE_STEP_INTO = 14
    };

    public enum DEBUG_OUTPUT : uint
    {
        DEBUG_OUTCTL_THIS_CLIENT = 0x00000000,
        DEBUG_OUTCTL_ALL_CLIENTS = 0x00000001,
        DEBUG_OUTCTL_ALL_OTHER_CLIENTS = 0x00000002,
        DEBUG_OUTCTL_IGNORE = 0x00000003,
        DEBUG_OUTCTL_LOG_ONLY = 0x00000004,
        DEBUG_OUTCTL_SEND_MASK = 0x00000007,
        DEBUG_OUTCTL_NOT_LOGGED = 0x00000008,
        DEBUG_OUTCTL_OVERRIDE_MASK = 0x00000010,
        DEBUG_OUTCTL_AMBIENT = 0xffffffff
    };

    public enum DEBUG_EXECUTE : uint
    {
        DEBUG_EXECUTE_DEFAULT = 0x00000000,
        DEBUG_EXECUTE_ECHO = 0x00000001,
        DEBUG_EXECUTE_NOT_LOGGED = 0x00000002,
        DEBUG_EXECUTE_NO_REPEAT = 0x00000004
    };

    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form_Main());
        }
    }
}
